Enterprise servers are often deployed as a cluster or distributed system to meet high availability and scalability demands of customers. A distributed system may handle network traffic of various protocols and may execute different logics in response to different external protocol messages. Such distributed systems usually require a unified load balancing and failover mechanism, and to that end, may rely on one or more external load balancers to distribute traffic between the members in a cluster. The load balancer is used for distributing load between cluster members, as well as tolerating failures of cluster members by redistributing requests to surviving members when a member has been shut down or becomes unreachable.
A distributed system usually holds one or more state structures in memory. The state structures may correspond to sessions, subscribers, or other stateful entities identified by each protocol message. A state structure is often held in duplicate copies in the memory of a subset of processes running in the distributed system cluster, and each cluster member knows where in the cluster it can find the state. Thus, a protocol message can be received on any cluster member and the receiving member can retrieve the state from the member that owns the state.